﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;
namespace GUI
{
    public partial class frmDatMon : Form
    {
        public frmDatMon()
        {
            InitializeComponent();
            
        }

        private void dgvDanhSach_CellClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btSua_Click(object sender, EventArgs e)
        {           
            // khu vuc cấm
            btThem.Text = "THOÁT";
            grbMonAn.Text = "Chỉnh Sửa Danh Sách Đặt Món";
            btLuu.Visible = true;
            btXoa.Visible = true;

            // khu vuc làm viêc

            //1. lay du lieu trong danh sach vao combox
        }

        private void btThem_Click(object sender, EventArgs e)
        {
            if (btThem.Text == "THOÁT")
            {
                btThem.Text = "THÊM";
                grbMonAn.Text = "Quản lý Đặt Món";
                btLuu.Visible = false;
                btXoa.Visible = false;
               

                return;
            }
            if (btThem.Text == "THÊM")
            {
                if (cbMaMA.Text == "" || cbMaMA.SelectedIndex<0)
                    return;

                /*int sld = Convert.ToInt16(txtSLDat); ;
                int slt = Convert.ToInt16(txtSLTon);
                if (sld > slt)
                    MessageBox.Show("SL dat vuot qua SL ton");
                 * */
                
                double thanhtien=double.Parse(txtSLDat.Text.ToString())*double.Parse(txtDonGia.Text.ToString());
                dgvDanhSach.Rows.Add(dgvDanhSach.Rows.Count+1, cbMaMA.SelectedValue.ToString(), txtTenMonAn.Text.ToString(), txtSLDat.Text.ToString(), txtDonGia.Text.ToString(), thanhtien);


                double tongtien = 0;
                for (int i = 0; i < dgvDanhSach.Rows.Count; i++)
                {
                    tongtien = tongtien + double.Parse(dgvDanhSach.Rows[i].Cells[5].Value.ToString());
                }
                lbTongTien.Text = tongtien.ToString();

                txtSLDat.Text = "0";
                txtDonGia.Text = "0.0";
                txtTenMonAn.Text = " ";
                cbMaMA.Text = "";
                txtSLTon.Text = "";
            }

           
        }

        private void btHuy_Click(object sender, EventArgs e)
        {
            // xoa du lieu trong danh sach da dat
            dgvDanhSach.Rows.Clear();
            txtSLDat.Text = "0";
            txtDonGia.Text = "0.0";
            txtTenMonAn.Text = " ";
            cbMaMA.Text = "";
            txtSLTon.Text = "0";
            lbTongTien.Text = "0.0";
        }

        private void frmDatMon_Load(object sender, EventArgs e)
        {
            if (Secssion.Sec.Count <= 0)
            {
                MessageBox.Show("Bạn chưa đăng Nhập");
                frmDangNhap frm = new frmDangNhap();
                frm.ShowDialog();
            }
            
            int ngay = System.DateTime.Today.Day;
            int thang = System.DateTime.Today.Month;
            int nam = System.DateTime.Today.Year;
            lbNgay.Text=thang+ "/"+ ngay + "/"+nam;

            LoadMonAn(ngay, thang, nam);
            LayMaKH();
            
            NhanVienBUS bus = new NhanVienBUS();
            NhanVienDTO nv = bus.LayThongTinNV(Secssion.Sec[0].ToString()); //
            lbNV.Text = nv.TenNV;

            DonHangBUS busDH = new DonHangBUS();
            lbMaHD.Text = busDH.TaoMaDHMoi();

            checkKHMoi.Checked = true;

            
        }

        private void btThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btXoa_Click(object sender, EventArgs e)
        {

        }

        private void grbNguoiMua_Enter(object sender, EventArgs e)
        {

        }

        private void LoadMonAn(int ngay, int thang, int nam)
        {
            LichHTBUS busHT = new LichHTBUS();
            List<LichHTDTO> dsHT = busHT.DanhSachTheoThang(thang, nam);
            cbMaMA.DataSource = dsHT;
            cbMaMA.DisplayMember = "MaMA";
            cbMaMA.ValueMember = "MaMA";
            cbMaMA.Text = "";
        }

        private void cbMaMA_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbMaMA.SelectedIndex < 0)
                return;
            if (cbMaMA.SelectedValue.ToString() == "DTO.LichHTDTO")
                return;
            txtSLTon.Text =LaySLMA(cbMaMA.SelectedValue.ToString()).ToString();
            LayMonAn(cbMaMA.SelectedValue.ToString());
        }
        private void LayMonAn(string MaMA)
        {
           MonAnBUS busMA = new MonAnBUS();
           MonAnDTO ma = busMA.LayThongTinMonAn(MaMA);
         //  string tenma = ma.TenMA;
           txtTenMonAn.Text = ma.TenMA.Trim();
           LoaiMonAnBUS busLMA = new LoaiMonAnBUS();
           LoaiMonAnDTO lma = busLMA.LayThongTinLoaiMonAn(ma.LoaiMA);
          txtDonGia.Text = lma.DonGia.ToString();

           
        }

        private void btLapHD_Click(object sender, EventArgs e)
        {
            if (txtMaKH.Text == "")
            {
                MessageBox.Show("Chưa nhập mã Khách hàng");
                return;
            }

            // kiem tra ngay 
            DateTime ngaydh = DateTime.Parse(lbNgay.Text.Trim());
            DateTime ngaygh = DateTime.Parse(dtimeNgayGiao.Text);

            if (ngaydh > ngaygh)
            {
                MessageBox.Show("Ngày giao hàng không hợp lệ!");
                return;
            }
            // Khách hàng
            KhachHangDTO khdto = new KhachHangDTO();
            khdto.MaKH = txtMaKH.Text;
            khdto.TenKH = txtTenKH.Text;
            if (txtSoDT.Text == "")
            {
                MessageBox.Show("Chưa nhập số dt");
                return;
            }
            khdto.DThoai = int.Parse(txtSoDT.Text.ToString());
            khdto.Diachi = txtDiaChi.Text;
            khdto.Cty = " ";
            khdto.Email=" ";
            int flag_kh=0;
            KhachHangBUS khbus = new KhachHangBUS();
            if (checkKHMoi.Checked == true)
                flag_kh = khbus.ThemKhachHang(khdto);
            else
                flag_kh = khbus.CapNhatKhachHang(khdto);
            if (flag_kh == 0)
            {
                MessageBox.Show(" Lỗi chập nhật thông tin khách hàng");
                return;
            }


            DonHangDTO dhdto = new DonHangDTO();
            dhdto.MaDH = lbMaHD.Text;
            dhdto.MaKH = txtMaKH.Text;
            dhdto.MaTT = 1;
            dhdto.NgayDH = DateTime.Parse( lbNgay.Text.Trim());
            dhdto.NVQL = Secssion.Sec[0].ToString();
            dhdto.TongTien = double.Parse( lbTongTien.Text.Trim());

            // Đơn hàng
            DonHangBUS dhbus = new DonHangBUS();
            dhbus.ThemDonHang(dhdto);
            

            //lịch giao
            LichGiaoDTO lgdto =  new LichGiaoDTO();
            lgdto.MaDH=lbMaHD.Text;
            lgdto.NgayGioDH = ngaydh;
            lgdto.NgayGioGH = ngaygh; // chinh lai ngay ghi giao

            LichGiaoBUS lgbus = new LichGiaoBUS();
            lgbus.ThemLichGiao(lgdto);

            // thêm chi tiên đơn hàng

            CTDonHangBUS ctdhbus = new CTDonHangBUS();
            for (int i = 0; i < dgvDanhSach.Rows.Count; i++)
            {
                 
                string mama=dgvDanhSach.Rows[i].Cells[1].Value.ToString();
                int soluong = int.Parse(dgvDanhSach.Rows[i].Cells[3].Value.ToString());

                 // giam so luong Món Ăn
                // code tranh chấp 
                MonAnBUS mabus = new MonAnBUS();
             
                int error = mabus.UpdateSLMA(mama,soluong);

                if (error == 0)
                {
                    MessageBox.Show("Lâp Hóa Đơn Thất Bại!");

                    // xử lý xóa nhugn gi da insert  truoc khi return;
                    return;
                }

                 CTDonHangDTO ctdhdto = new CTDonHangDTO();
                ctdhdto.MaDH = lbMaHD.Text;
                ctdhdto.MaMA = mama;
                ctdhdto.SoLuong= soluong;
                ctdhbus.ThemCTDonHang(ctdhdto);
               
            }


            removeAll();
            MessageBox.Show("Lập hóa đơn thành công!");
            txtMaKH.Text = khbus.TaoMaKHMoi();
            lbMaHD.Text = "";
            lbMaHD.Text = dhbus.TaoMaDHMoi();
            checkKHMoi.Checked = true;
            lbTongTien.Text = "0.0";
            
        }

        private void checkKHMoi_CheckedChanged(object sender, EventArgs e)
        {
            if (checkKHMoi.Checked == true)
            {
                removeAll();
                KhachHangBUS buskh = new KhachHangBUS();
                txtMaKH.Text = buskh.TaoMaKHMoi();
                txtMaKH.Enabled = false;
                
            }
            else
            {
                txtMaKH.Enabled = true;
                txtMaKH.Text = "";

            }
        }

        private void txtMaKH_TextChanged(object sender, EventArgs e)
        {
            if (checkKHMoi.Checked == true|| txtMaKH.Text=="")
                return;
            else
            {

                KhachHangBUS bus = new KhachHangBUS();
                KhachHangDTO kh = bus.ThongTinKhachHang(txtMaKH.Text);
                txtTenKH.Text = kh.TenKH;
                txtSoDT.Text = kh.DThoai.ToString();
                txtDiaChi.Text = kh.Diachi;
            }
        }

        public void removeAll()
        {
            dgvDanhSach.Rows.Clear();
            txtMaKH.Text = "";
            txtDiaChi.Text = "";
            txtSoDT.Text = "";
            txtTenKH.Text = "";
  
        }
        private void LayMaKH()
        {
            AutoCompleteStringCollection auto = new AutoCompleteStringCollection();
            List<string> lis = new List<string>();
            KhachHangBUS bus = new KhachHangBUS();
            lis = bus.LayMaKH();
            for (int i = 0; i < lis.Count; i++)
                auto.Add(lis[i]);
            txtMaKH.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            txtMaKH.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtMaKH.AutoCompleteCustomSource = auto;

        }

        private void txtSLDat_TextChanged(object sender, EventArgs e)
        {
            if(int.Parse(txtSLDat.Text)>int.Parse(txtSLTon.Text))
            {
                MessageBox.Show("Số Lượng trong Kho còn: "+txtSLTon.Text);
                return;
            }
        }

        private int LaySLMA(String mama)
        {
            MonAnBUS bus = new MonAnBUS();
            return bus.LaySLMA(mama);
        }
    }
}
